/*Copyright (C) 2009 - 2011 MASSART GAUTHIER

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#include "../headers.h"

void afficher_historiques(char jeu[20], char *auteur, char *nom_historique, char version[100][50]);
void lire_historiques(char jeu[20]);

void afficher_historiques(char jeu[20], char *auteur, char *nom_historique, char version[100][50]) {
	int i = 0, j = 0, k = 0, lignes_passees = 7;
	char contenu_version[5000];

	clear();
	CSLP_ColorText(COLOR_RED);
	afficher_sous_titre(nom_historique, false);
	CSLP_ColorText(COLOR_GREEN);
	printw(" %s\n\n", auteur);

	ini_gets(jeu, version[0], "aap", contenu_version, sizearray(contenu_version), "historiques.lst"); //On récupère le contenu de là 1ère version

	while(version[i][0] != '\0') {
		char **contenu_version_liste = split("$", contenu_version); //On découpe le contenu des version en morceau séparés par des "$"

		if(i % 2 != 0) {
			CSLP_ColorText(COLOR_YELLOW);
		}
		else {
			CSLP_ColorText(COLOR_CYAN);
		}

		goto_begin_line();
		printw(" Version %s : ", version[i]);

		for(j = 0; contenu_version_liste[j] != NULL; j++) { //On affiche le contenu d'une version

			if(contenu_version_liste[1] != '\0') { //On vérifie si la liste de nouveauté est plus longue que 1.
				addstr("•");
			}

			addstr(contenu_version_liste[j]);
			addch('\n');

			for(k = 0; k != (strlen_utf8(version[i]) + 12); k++) { //On aligne les contenu des version
				addch(' ');
			}

			lignes_passees++; //compte les lignes sauté depuis le début de l'affichage
		}

		if(lignes_passees > 28 && version[i+1][0] != '\0') { //si les crédit dépasse la ligne 28 alors on efface l'écran avant de poursuivre l'affichage
			CSLP_ColorText(COLOR_RED);
			move(37, 0);
			afficher_centre("Appuyez sur une touche pour voir la suite...");
			getch();
			clear();
			CSLP_ColorText(COLOR_RED);
			afficher_sous_titre(nom_historique, false);
			CSLP_ColorText(COLOR_GREEN);
			printw(" %s\n\n", auteur);
			lignes_passees = 7;
		}

		i++;
		unsplit(contenu_version_liste); //On libère la mémoire alouée
		ini_gets(jeu, version[i], "aap", contenu_version, sizearray(contenu_version), "historiques.lst"); //On récupère le contenu de la prochaine version
	}
}

void lire_historiques(char jeu[20]) {
	int i, nb_ver = 0;
	char key[30], auteur[100], nom_historique[100];
	char version[100][50];

	for(i = 0; i != 99; i++) {
		strcpy(version[i], "");
	}

	for(i = 0; ini_getkey(jeu, i, key, sizearray(key), "historiques.lst") > 0; i++) {
		if(!strcmp(key, "auteur")) {
			ini_gets(jeu, key, "aap", auteur, sizearray(auteur), "historiques.lst");
		}
		else if(!strcmp(key, "historique")) {
			ini_gets(jeu, key, "aap", nom_historique, sizearray(nom_historique), "historiques.lst");
		}
		else {
			strcpy(version[nb_ver], key);
			nb_ver++;
		}
	}

	afficher_historiques(jeu, auteur, nom_historique, version);
	CSLP_ColorText(COLOR_RED);
	move(37, 0);
	afficher_centre("Appuyez sur une touche pour voir la suite...");
	getch();
	clear();
}

void historiques(void) {
	char *contenu_titre = "HISTORIQUES";
	int retour = 0;

	do {
		long lire = 0;

		clear();

		lire = afficher_menu(
						 "*Les Jeux indémodables :\n"
						 "Historique\n"
						 "*Les jeux :\n"
						 "Historique du plus ou moins\n"
						 "Historique du pendu\n"
						 "Historique du pousse caisses\n"
						 "Historique du morpion\n"
						 "Historique du snake\n"
						 "Historique du chifumi\n"
						 "Historique des tours de hanoi\n"
						 "Historique du bantumi\n"
						 "Historique du tetris\n"
						 "Historique du tower build\n"
						 "Historique du pong\n"
						 "Historique de l'excit\n"
						 "Historique du puissance 4\n"
						 "*Autre :\n"
						 "Revenir au menu principal\n", "Que voulez vous consulter ? \n", contenu_titre);

		if(lire == 1) {
			lire_historiques("LI");
		}
		else if(lire == 2) {
			lire_historiques("PlusOuMoins");
		}
		else if(lire == 3) {
			lire_historiques("Pendu");
		}
		else if(lire == 4) {
			lire_historiques("PousseCaisse");
		}
		else if(lire == 5) {
			lire_historiques("Morpion");
		}
		else if(lire == 6) {
			lire_historiques("Snake");
		}
		else if(lire == 7) {
			lire_historiques("Chifumi");
		}
		else if(lire == 8) {
			lire_historiques("ToursDeHanoi");
		}
		else if(lire == 9) {
			lire_historiques("Bantumi");
		}
		else if(lire == 10) {
			lire_historiques("Tetris");
		}
		else if(lire == 11) {
			lire_historiques("TowerBuild");
		}
		else if(lire == 12) {
			lire_historiques("Pong");
		}
		else if(lire == 13) {
			lire_historiques("Excit");
		}
		else if(lire == 14) {
			lire_historiques("Puissance4");
		}
		else {
			retour = 1;
		}
	}
	while(retour != 1);
}
